perm filename ZZZ[S1,ALS]1 blob
sn#448870 filedate 1979-06-13 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00005 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 UABS ,UADD ,USUB ,UMPY ,UDIV ,UADJ ,UAND ,UBGN ,UBGNB,UCHKF,
C00009 00003 USTP : (*null case*)
C00021 00004 ENTER_OPC ('ABS ', UABS) ENTER_OPC ('ADD ', UADD)
C00026 00005 Instruction summary
C00028 ENDMK
C⊗;
UABS ,UADD ,USUB ,UMPY ,UDIV ,UADJ ,UAND ,UBGN ,UBGNB,UCHKF,
UCHKH,UCHKL,UCHKN,UCHKT,UCLAB,UCOMM,UCSP ,UCUP ,UCVT ,UCVT2,
UDEAD,UDEC ,UDEF ,UDIF ,UDMD ,UDOA ,UDSP ,UDUP ,UEND ,UENDB,
UENT ,UEXPP,UEXPV,UFJP ,UICUP,UEQU ,UNEQ ,UGEQ ,UGRT ,ULEQ ,
ULES ,UIEQU,UINEQ,UIGEQ,UIGRT,UILEQ,UILES,UILOD,UIMOV,UIMPP,
UIMPV,UINC ,UINN ,UINST,UINT ,UIOR ,UISTR,UIXA ,ULAB ,ULCA ,
ULDA ,ULDC ,ULDP ,ULEX ,ULIVE,ULOC ,ULOD ,UMDEF,UMOD ,UMST ,
UMUS ,UNEG ,UNEW ,UNOT ,UNSTR,UODD ,UOPTN,UPAR ,UPLEX,UPLOD,
UPSTR,URET ,URND ,USDEF,USGS ,USQR ,USTP ,USTR ,USWP ,USYM ,
UTJP ,UTYP ,UTYP2,UUJP ,UUNI ,UUNK ,UXJP ,UXOR );
case OPC of
UCHKF, UCHKN, UCHKT, USTP, URET :
(*null case*);
UCLAB, ULAB, ULOC, UMST, UNEW, UPLEX, UTJP :
READINT (I1);
UEXPP, UIMPP, UIMPV :
begin
READINT (I1);
READNAM (NAM1);
end;
ULEX : begin
READINT (I1);
READINT (I2);
end;
ULDP : begin
READINT (I1);
READINT (I2);
READNAM (NAM1);
end;
UEND : READNAM (NAM0);
UBGN, UFJP, UUJP :
READNAM (NAM1);
UABS, UADD, USUB, UMPY, UDIV, UAND, UDIF, UDMD, UDSP, UDUP,
UEQU, UNEQ, UGEQ, UGRT, ULEQ, ULES, UIEQU,UINEQ,UIGEQ,UIGRT,
UILEQ,UILES,UINN, UINT, UIOR, UMOD, UMUS, UNEG, UNOT, UODD,
USDEF,USGS, USQR, UUNI :
READTYP (TYP);
UCVT, UCVT2, URND, USWP, UTYP, UTYP2 :
begin
READTYP (TYP);
READTYP (TYPO2);
end;
UDEF, UDEC, UINC, UCHKH, UCHKL, UIXA, UIMOV :
begin
READTYP (TYP);
READINT (I1);
end;
UADJ, UICUP, UILOD, UINST, UISTR:
begin
READTYP (TYP);
READINT (I1);
READINT (I2);
end;
UENT : begin
READTYP (TYP);
READINT (I1);
READINT (I2);
READINT (I3);
READINT (I4);
READNAM (NAM1);
READINT (I5);
end;
UDEAD, UDOA, UEXPV, ULDA, ULIVE, USYM :
begin
READMTYP (MTYP);
READINT (I1);
READINT (I2);
READINT (I3);
end;
UMDEF : begin
READMTYP (MTYP);
READINT (I1);
READINT (I2);
READINT (I3);
WRITE (OUTPUT, ' ');
for I := 1 to SLGTH do
WRITE (OUTPUT, SVAL[I]);
end;
UXJP :
begin
READTYP (TYP);
READNAM (NAM1);
READNAM (NAM2);
READINT (I1);
READINT (I2);
end;
ULOD, UNSTR, UPAR, UPLOD, USTR :
begin
READTYP (TYP);
READMTYP (MTYP);
READINT (I1);
READINT (I2);
READINT (I3);
end;
UCSP : begin
READTYP (TYP);
READNAM (NAM1);
READINT (I1);
READINT (I2);
end;
UCUP : begin
READTYP (TYP);
READINT (I1);
READNAM (NAM1);
READINT (I2);
READINT (I3);
end;
ULDC : begin
READTYP (TYP);
READINT (I1);
case TYP of
TYPUJ : READINT (I1);
TYPUC : WRITE (OUTPUT, ' ''', chr(I1), '''');
TYPUR : WRITE (OUTPUT, ' ', R1);
TYPUN : (*null case*);
TYPUB : READINT (I1);
TYPUS : READSET (P1);
end (*case TYP of*);
end (*ULDC*);
ULCA : begin
READINT (I1);
WHILE (CH <> '''') and not eoln (INPUT) do READ (CH);
READ (CH);
SLGTH := 0;
while (CH<>'''') or (INPUT↑='''') do
begin
SLGTH := SLGTH + 1;
SVAL[SLGTH] := CH;
if CH = '''' then READ (CH);
READ (CH);
end (*while*);
end (*ULCA*);
UCOMM: begin
while (CH = ' ') and not eoln(INPUT) do READ(CH);
SLGTH := 0;
while (SLGTH < STRINGMAX) and not eoln(INPUT) do
begin
READ (CH);
SLGTH := SLGTH + 1;
SVAL[SLGTH] := CH;
end (*while*);
end (*ucomm*);
UUNK : begin
READINT (I2);
READINT (I3);
while (CH = ' ') and not eoln(INPUT) do READ(CH);
SLGTH := 0;
while (SLGTH < STRINGMAX) and not eoln(INPUT) do
begin
READ (CH);
SLGTH := SLGTH + 1;
SVAL[SLGTH] := CH;
end (*while*);
end;
end (*case OPC of*);
WRITELN(OUTPUT);
end (*READNXTINST*);
************
USTP : (*null case*);
UENT : begin
PRINTTYP (TYP);
PRINTINT (I1);
PRINTINT (I2);
PRINTINT (I3);
PRINTINT (I4);
PRINTNAM (NAM1);
PRINTINT (I5);
end;
ULEX : begin
PRINTINT (I1);
PRINTINT (I2);
end;
UEND : PRINTNAM (NAM0);
UMST : begin
PRINTINT (I1);
end;
ULAB, UCLAB : PRINTINT (I1);
UDEF : begin
PRINTMTYP (MTYP);
PRINTINT (I1);
end;
(* USST : begin
PRINTTYP (TYP);
PRINTNAM (NAM1);
PRINTINT (I1);
PRINTINT (I2);
PRINTINT (I3);
PRINTINT (I4);
PRINTINT (I5);
PRINTINT (I6);
end;
UTOF : PRINTNAM (NAM1);
UTON : begin
PRINTNAM (NAM1);
if (NAM1.NAM <> 'UCODE ')
and (NAM1.NAM <> 'PEEPHOLE') then
begin
PRINTNAM (NAM2);
if NAM2.NAM[1] = 'A' then
begin
if NAM1.NAM <> 'S1CODE ' then
PRINTINT (I1)
end
else if NAM2.NAM[1] <> 'P' then
ERROR (WINVAL_TRACE);
end;
end;
*)
UBGN: begin (*14JAN79 PTZ...*)
PRINTNAM (NAM1);
end; (*...14JAN79 PTZ*)
(*opcode class 1*)
URET, UCHKF, UCHKN, UCHKT :
(*null case*);
(* opcode class 1a*)
UAND, UDIF, UINN, UINT, UIOR, UNOT, USGS, UUNI :
PRINTTYP (TYP);
(*opcode class 2*)
ULOC, UNEW : (*14JAN79 PTZ*)
PRINTINT (I1);
(*opcode class 2a*)
UIXA, UIMOV :
begin
PRINTTYP (TYP);
PRINTINT (I1);
end;
(*opcode class 3*)
ULDA:
begin
PRINTMTYP (MTYP);
PRINTINT (I1);
PRINTINT (I2);
PRINTINT (I3);
end;
(*opcode class 4*)
UFJP, UUJP :
PRINTNAM (NAM1);
(*opcode class 4a*)
UXJP :
begin
PRINTTYP (TYP);
PRINTNAM (NAM1);
PRINTNAM (NAM2);
PRINTINT (I1);
PRINTINT (I2);
end;
(*opcode class 5*)
UEQU, UGEQ, UGRT, ULEQ, ULES, UNEQ,
UIEQU, UIGEQ, UIGRT, UILEQ, UILES, UINEQ :
PRINTTYP (TYP);
(*opcode class 6*)
UADD,UABS,UMOD,UDIV,UDMD,UMPY,UNEG,USUB,USQR,UDUP :
PRINTTYP (TYP);
(*opcode class 6a*)
USWP :
begin
PRINTTYP (TYP);
PRINTTYP (TYPO2);
end;
(*opcode class 7*)
UDEC, UINC, UCHKH, UCHKL:
begin
PRINTTYP (TYP);
PRINTINT (I1);
end;
(*opcode class 8*)
UPAR, ULOD, USTR, UPLOD, UNSTR :
begin
PRINTTYP (TYP);
PRINTMTYP (MTYP);
PRINTINT (I1);
PRINTINT (I2);
PRINTINT (I3);
end;
UILOD:
begin
PRINTTYP (TYP);
PRINTINT (I1);
PRINTINT (I2);
end;
UISTR:
begin
PRINTTYP (TYP);
PRINTINT (I1);
PRINTINT (I2);
end;
UCSP : begin
PRINTTYP (TYP);
PRINTNAM (NAM1);
PRINTINT (I1);
PRINTINT (I2);
end;
UCUP : begin
PRINTTYP (TYP);
PRINTINT (I1);
PRINTNAM (NAM1);
PRINTINT (I2);
PRINTINT (I3);
end;
ULDC : begin
PRINTTYP (TYP);
PRINTINT (I1);
case TYP of
TYPUJ : PRINTINT (I1);
TYPUC : WRITE (OUTPUT, ' ''', chr(I1), '''');
TYPUR : WRITE (OUTPUT, ' ', R1);
TYPUN : (*null case*);
TYPUB : PRINTINT (I1);
TYPUS : PRINTSET (P1);
end (*case TYP of*);
end (*ULDC*);
ULCA : begin
PRINTINT (I1);
WRITE (OUTPUT, ' ''');
for I := 1 to SLGTH do
WRITE (OUTPUT, SVAL[I]);
WRITE (OUTPUT, '''');
end (*ULCA*);
UCOMM: begin
WRITE (OUTPUT,' ');
for I := 1 to SLGTH do
WRITE (OUTPUT, SVAL[I]);
end (* UCOMM*);
USTP : (*null case*);
UENT : begin
READTYP (TYP);
READINT (I1);
READINT (I2);
READINT (I3);
READINT (I4);
READNAM (NAM1);
READINT (I5);
end;
ULEX : begin
READINT (I1);
READINT (I2);
end;
UEND : READNAM (NAM0);
UMST : begin
READINT (I1);
end;
ULAB,UCLAB : READINT (I1);
UDEF : begin
READMTYP (MTYP);
READINT (I1);
end;
(*
USST : begin
READTYP (TYP);
READNAM (NAM1);
READINT (I1);
READINT (I2);
READINT (I3);
READINT (I4);
READINT (I5);
READINT (I6);
end;
UTOF : READNAM (NAM1);
UTON : begin
READNAM (NAM1);
if (NAM1.NAM <> 'UCODE ')
and (NAM1.NAM <> 'PEEPHOLE') then
begin
READNAM (NAM2);
if NAM2.NAM[1] = 'A' then
begin
if NAM1.NAM <> 'S1CODE ' then
READINT (I1)
end
else if NAM2.NAM[1] <> 'P' then
ERROR (WINVAL_TRACE);
end;
end;
*)
UBGN: begin (*14JAN79 PTZ...*)
READNAM (NAM1);
end; (*...14JAN79 PTZ*)
(*
UCHK: begin
READINT (I1);
READINT (I2);
end; *)
(*opcode class 1*)
URET, UCHKF, UCHKN, UCHKT :
(*null case*);
(*opcode class 1a*)
UAND, UDIF, UINN, UINT, UIOR, UNOT, USGS, UUNI :
READTYP (TYP);
(*opcode class 2*)
ULOC, UNEW : (*14JAN79 PTZ*)
READINT (I1);
(*opcode class 2a*)
UIXA, UIMOV :
begin
READTYP (TYP);
READINT (I1);
end;
(*opcode class 3*)
ULDA:
begin
READMTYP (MTYP);
READINT (I1);
READINT (I2);
READINT (I3);
end;
(*opcode class 4*)
UFJP, UUJP :
READNAM (NAM1);
(*opcode class 4a*)
UXJP :
begin
READTYP (TYP);
READNAM (NAM1);
READNAM (NAM2);
READINT (I1);
READINT (I2);
end;
(*opcode class 5*)
UEQU, UGEQ, UGRT, ULEQ, ULES, UNEQ,
UIEQU, UIGEQ, UIGRT, UILEQ, UILES, UINEQ :
READTYP (TYP);
(*opcode class 6*)
UADD,UABS,UMOD,UDIV,UDMD,UMPY,UNEG,USUB,USQR,UDUP :
READTYP (TYP);
(*opcode class 6a*)
USWP :
begin
READTYP (TYP);
READTYP (TYPO2);
end;
(*opcode class 7*)
UDEC, UINC, UCHKH, UCHKL:
begin
READTYP (TYP);
READINT (I1);
end;
(*opcode class 8*)
UPAR, ULOD, USTR, UPLOD , UNSTR:
begin
READTYP (TYP);
READMTYP (MTYP);
READINT (I1);
READINT (I2);
READINT (I3);
end;
UILOD:
begin
READTYP (TYP);
READINT (I1);
READINT (I2);
end;
UISTR:
begin
READTYP (TYP);
READINT (I1);
READINT (I2);
end;
UCSP : begin
READTYP (TYP);
READNAM (NAM1);
READINT (I1);
READINT (I2);
end;
UCUP : begin
READTYP (TYP);
READINT (I1);
READNAM (NAM1);
READINT (I2);
READINT (I3);
end;
ULDC : begin
READTYP (TYP);
READINT (I1);
case TYP of
TYPUJ : READINT (I1);
TYPUC : begin
READ (CH, CH, CH);
I1 := ord(CH) - CHARDIF; (*CHARDIF*)
end;
TYPUR : READREAL (R1);
TYPUN : (*null case*);
TYPUB : READINT (I1);
TYPUS : READSET (P1);
end (*case TYP of*);
end (*ULDC*);
ULCA : begin
READINT (I1);
WHILE (CH <> '''') and not eoln (INPUT) do READ (CH);
READ (CH);
SLGTH := 0;
while (CH<>'''') or (INPUT↑='''') do
begin
SLGTH := SLGTH + 1;
SVAL[SLGTH] := CH;
if CH = '''' then READ (CH);
READ (CH);
end (*while*);
end (*ULCA*);
UCOMM: begin
while (CH = ' ') and not eoln(INPUT) do READ(CH);
SLGTH := 0;
while (SLGTH < STRINGMAX) and not eoln(INPUT) do
begin
READ (CH);
SLGTH := SLGTH + 1;
SVAL[SLGTH] := CH;
end (*while*);
end (*ucomm*);
ENTER_OPC ('ABS ', UABS); ENTER_OPC ('ADD ', UADD);
ENTER_OPC ('SUB ', USUB); ENTER_OPC ('MPY ', UMPY);
ENTER_OPC ('DIV ', UDIV); ENTER_OPC ('ADJ ', UADJ);
ENTER_OPC ('AND ', UAND); ENTER_OPC ('BGN ', UBGN);
ENTER_OPC ('BGNB', UBGNB); ENTER_OPC ('CHKF', UCHKF);
ENTER_OPC ('CHKH', UCHKH); ENTER_OPC ('CHKL', UCHKL);
ENTER_OPC ('CHKN', UCHKN); ENTER_OPC ('CHKT', UCHKT);
ENTER_OPC ('CLAB', UCLAB); ENTER_OPC ('COMM', UCOMM);
ENTER_OPC ('CSP ', UCSP); ENTER_OPC ('CUP ', UCUP);
ENTER_OPC ('CVT ', UCVT); ENTER_OPC ('CVT2', UCVT2);
ENTER_OPC ('DEAD', UDEAD); ENTER_OPC ('DEC ', UDEC);
ENTER_OPC ('DEF ', UDEF); ENTER_OPC ('DIF ', UDIF);
ENTER_OPC ('DMD ', UDMD); ENTER_OPC ('DOA ', UDOA);
ENTER_OPC ('DSP ', UDSP); ENTER_OPC ('DUP ', UDUP);
ENTER_OPC ('END ', UEND); ENTER_OPC ('ENDB', UENDB);
ENTER_OPC ('ENT ', UENT); ENTER_OPC ('EXPP', UEXPP);
ENTER_OPC ('EXPV', UEXPV); ENTER_OPC ('FJP ', UFJP);
ENTER_OPC ('ICUP', UICUP); ENTER_OPC ('EQU ', UEQU);
ENTER_OPC ('NEQ ', UNEQ); ENTER_OPC ('GEQ ', UGEQ);
ENTER_OPC ('GRT ', UGRT); ENTER_OPC ('LEQ ', ULEQ);
ENTER_OPC ('LES ', ULES); ENTER_OPC ('IEQU', UIEQU);
ENTER_OPC ('INEQ', UINEQ); ENTER_OPC ('IGEQ', UIGEQ);
ENTER_OPC ('IGRT', UIGRT); ENTER_OPC ('ILEQ', UILEQ);
ENTER_OPC ('ILES', UILES); ENTER_OPC ('ILOD', UILOD);
ENTER_OPC ('IMOV', UIMOV); ENTER_OPC ('IMPP', UIMPP);
ENTER_OPC ('IMPV', UIMPV); ENTER_OPC ('INC ', UINC);
ENTER_OPC ('INN ', UINN); ENTER_OPC ('INST', UINST);
ENTER_OPC ('INT ', UINT); ENTER_OPC ('IOR ', UIOR);
ENTER_OPC ('ISTR', UISTR); ENTER_OPC ('IXA ', UIXA);
ENTER_OPC ('LAB ', ULAB); ENTER_OPC ('LCA ', ULCA);
ENTER_OPC ('LDA ', ULDA); ENTER_OPC ('LDC ', ULDC);
ENTER_OPC ('LDP ', ULDP); ENTER_OPC ('LEX ', ULEX);
ENTER_OPC ('LIVE', ULIVE); ENTER_OPC ('LOC ', ULOC);
ENTER_OPC ('LOD ', ULOD); ENTER_OPC ('MDEF', UMDEF);
ENTER_OPC ('MOD ', UMOD); ENTER_OPC ('MST ', UMST);
ENTER_OPC ('MUS ', UMUS); ENTER_OPC ('NEG ', UNEG);
ENTER_OPC ('NEW ', UNEW); ENTER_OPC ('NOT ', UNOT);
ENTER_OPC ('NSTR', UNSTR); ENTER_OPC ('ODD ', UODD);
ENTER_OPC ('OPTN', UOPTN); ENTER_OPC ('PAR ', UPAR);
ENTER_OPC ('PLEX', UPLEX); ENTER_OPC ('PLOD', UPLOD);
ENTER_OPC ('PSTR', UPSTR); ENTER_OPC ('RET ', URET);
ENTER_OPC ('RND ', URND); ENTER_OPC ('SDEF', USDEF);
ENTER_OPC ('SGS ', USGS); ENTER_OPC ('SQR ', USQR);
ENTER_OPC ('STP ', USTP); ENTER_OPC ('STR ', USTR);
ENTER_OPC ('SWP ', USWP); ENTER_OPC ('SYM ', USYM);
ENTER_OPC ('TJP ', UTJP); ENTER_OPC ('TYP ', UTYP);
ENTER_OPC ('TYP2', UTYP2); ENTER_OPC ('UJP ', UUJP);
ENTER_OPC ('UNI ', UUNI); ENTER_OPC ('UNK ', UUNK);
ENTER_OPC ('XJP ', UXJP); ENTER_OPC ('XOR ', UXOR);
Instruction summary
int integer
real real
num integer or real
mnem. Parameters Stack before stack after
---- ---------- ------------------- -------------------
top-2 top-1 top top-2 top-1 top
----- ----- ----- ----- ----- -----
ABS {I,J,Q,R} ... d.t. ... d.t.
ADD {I,J,K,L,Q,R} ... d.t. d.t. ... d.t.
SUB {I,J,K,L,Q,R} ... d.t. d.t. ... d.t.
MPY {I,J,K,L,Q,R} ... d.t. d.t. ... d.t.
DIV {I,J,K,L,Q,R} ... d.t. d.t. ... d.t.
ADJ {S} <↔> <len> ... set ... set
AND {B} bool bool ... bool
BGN <name> ... ...
BGNB
CHKF
CHKH
CHKL
CHKN
CHKT
CLAB
COMM
CSP
CUP
CVT
CVT2
DEAD
DEC
DEF
DIF
DMD
DOA
DSP
DUP
END
ENDB
ENT
EXPP
EXPV
FJP
ICUP
EQU
NEQ
GEQ
GRT
LEQ
LES
IEQU
INEQ
IGEQ
IGRT
ILEQ
ILES
ILOD
IMOV
IMPP
IMPV
INC
INN
INST
INT
IOR
ISTR
IXA
LAB
LCA
LDA
LDC
LDP
LEX
LIVE
LOC
LOD
MDEF
MOD
MST
MUS
NEG
NEW
NOT
NSTR
ODD
OPTN
PAR
PLEX
PLOD
PSTR
RET
RND
SDEF
SGS
SQR
STP
STR
SWP
SYM
TJP
TYP
TYP2
UJP
UNI
UNK
XJP
XOR